The present invention relates generally to database systems and more particularly to techniques for implementing database application intelligence in communication processes associated with mass storage sub-systems.
Special purpose data processing hardware and application software that is optimized for the retrieval, update, and restoration of large amounts of information are generally known as database applications or database sub-systems. Database applications find use in a variety of information-intensive areas where relatively large amounts of data need to be stored and accessed reliably. Such systems find their most common use in the data processing systems that support mission-critical commercial applications. For instance, a bank may typically use a large central database sub-system in order to store customer account and specifically individual transaction information. Similarly, a large retail manufacturer may maintain databases containing references to millions of pages of files representing the details associated with a large number of customer transactions.
However, even most medium sized organizations have now adopted a client-server data processing model where centralized storage sub-systems are accessed through network connections such as the Internet, intranets, private networks, and the like. This architecture permits certain portions of application software to execute on client computers and other portions to execute on special purpose centralized database information appliances.
An important design trend in the area such storage sub-systems is to move the amounts and kinds of work that were traditionally performed by a host processor serving a large disk array down to specialized processors or disk controllers associated with each mass storage device. This has the distinct advantage of making minimum demands on often over-utilized centralized host processors while allowing simultaneous operations on the same data to occur in or as close as possible to the storage devices themselves. These storage sub-systems offer the opportunity to offload file system and storage management functionality from the dedicated server machines and instead execute many requests directly or in parallel at the storage devices, without server intervention.
Indeed, suggestions have even been made that application-specific code may be executed at the storage devices on behalf of clients and/or servers to considerably improve application input/output (I/O) performance. Remote execution of the code directly at the storage devices allows, for example, data filtering operations to be performed as close as possible to the data. This allows for optimization of time-sensitive transfers, and further supports management functions to be customized and updated without firmware or hardware upgrades. In general, such an architecture makes possible complex or specialized operations on a far more efficient basis than a general purpose storage interface might normally otherwise support. See, for example, Acharya, A., et al, “Active Disks: Programming Model, Algorithms and Evaluation,” October 1998, Proceedings of the 8th International Conference on Architectural Support for Programming Languages and Operating Systems ASPLOS VIII, and Gibson, G. A., et al. in “File Systems for Network-Attached Secure Disks,” July 1997, CMU-CS-97-118.